package com.zzty.springmybatis.service.impl;

import java.util.ArrayList;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.zzty.springmybatis.DAO.ClassGroupDAO;
import com.zzty.springmybatis.DAO.ClazzDAO;
import com.zzty.springmybatis.DAO.QuestionDAO;
import com.zzty.springmybatis.DAO.SelfExamDAO;
import com.zzty.springmybatis.DAO.SelfExamTransationDAO;
import com.zzty.springmybatis.DAO.TeamExamDAO;
import com.zzty.springmybatis.DAO.TeamExamTransationDAO;
import com.zzty.springmybatis.DAO.UserDAO;
import com.zzty.springmybatis.entity.ClassGroup;
import com.zzty.springmybatis.entity.Clazz;
import com.zzty.springmybatis.entity.Question;
import com.zzty.springmybatis.entity.SelfExam;
import com.zzty.springmybatis.entity.SelfExamTransation;
import com.zzty.springmybatis.entity.TeamExam;
import com.zzty.springmybatis.entity.TeamExamTransation;
import com.zzty.springmybatis.entity.User;
import com.zzty.springmybatis.service.DataBaseSelectService;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

@Service
public class DataBaseSelectServiceImpl implements DataBaseSelectService {
	@Autowired
	ClazzDAO clazzDAO;
	@Autowired
	ClassGroupDAO classGroupDAO;
	@Autowired
	QuestionDAO questionDAO;
	@Autowired
	SelfExamDAO selfExamDAO;
	@Autowired
	SelfExamTransationDAO selfExamtransationDAO;
	@Autowired
	TeamExamDAO teamExamDAO;
	@Autowired
	TeamExamTransationDAO teamExamTransationDAO;
	@Autowired
	UserDAO userDAO;

	public JSONArray selectDataBySql(String sql, String tableName) {
		JSONArray json = new JSONArray();
		System.out.println(tableName);
		switch (tableName) {
		
		case "clazz":json = listClazzToJson(clazzDAO.selectBySql(sql));break;
		case "classgroup":json =listClassGroupToJson(classGroupDAO.selectBySql(sql));break;
		case "question":json =listQuestionToJson(questionDAO.selectBySql(sql));break;
		case "selfexam":json =listSelfExamToJson(selfExamDAO.selectBySql(sql));break;
		case "selfexamtransation":json =listSelfExamTransationToJson(selfExamtransationDAO.selectBySql(sql));break;
		case "teamexam":json =listTeamExamToJson(teamExamDAO.selectBySql(sql));break;
		case "teamexamtransation":json =listTeamExamTransationToJson(teamExamTransationDAO.selectBySql(sql));break;
		case "user":json =listUserToJson(userDAO.selectBySql(sql));break;
		default:return null;
		}

		return json;
	}

	public JSONArray listClazzToJson(List<Clazz> list) {
		JSONArray json = new JSONArray();
		JSONObject json1 = new JSONObject();
		JSONObject json2 = new JSONObject();
		json1.put(1, "id");
		json1.put(2, "name");
		json.add(json1);
//		System.out.println(list.get(0).toString());
		for (int i = 0; i < list.size(); i++) {
			json2.put("id", list.get(i).getId());
			json2.put("name", list.get(i).getName());
			json.add(json2);
		}
		return json;
	}

	public JSONArray listClassGroupToJson(List<ClassGroup> list) {
		JSONArray json = new JSONArray();
		JSONObject json1 = new JSONObject();
		JSONObject json2 = new JSONObject();
		json1.put(1, "id");
		json1.put(2, "class_id");
		json1.put(3, "stu_ids");
		json.add(json1);
		for (int i = 0; i < list.size(); i++) {
			json2.put("id", list.get(i).getId());
			json2.put("class_id", list.get(i).getClass_id());
			json2.put("stu_ids", list.get(i).getStu_ids());
			json.add(json2);
		}

		return json;
	}

	public JSONArray listQuestionToJson(List<Question> list) {
		JSONArray json = new JSONArray();
		JSONObject json1 = new JSONObject();
		JSONObject json2 = new JSONObject();
		json1.put(1, "id");
		json1.put(2, "subject");
		json1.put(3, "content");
		json.add(json1);
		for (int i = 0; i < list.size(); i++) {
			json2.put("id", list.get(i).getId());
			json2.put("subject", list.get(i).getSubject());
			json2.put("content", list.get(i).getContent());
			json.add(json2);
		}

		return json;
	}

	public JSONArray listSelfExamToJson(List<SelfExam> list) {
		JSONArray json = new JSONArray();
		JSONObject json1 = new JSONObject();
		JSONObject json2 = new JSONObject();
		json1.put(1, "id");
		json1.put(2, "date");
		json1.put(3, "questions");
		json1.put(4, "clazzId");
		json1.put(5, "winnerId");
		json.add(json1);
		for (int i = 0; i < list.size(); i++) {
			json2.put("id", list.get(i).getId());
			json2.put("date", list.get(i).getDate());
			json2.put("questions", list.get(i).getQuestions());
			json2.put("clazzId", list.get(i).getClazzId());
			json2.put("winnerId", list.get(i).getWinnerId());
			json.add(json2);
		}

		return json;
	}

	public JSONArray listSelfExamTransationToJson(List<SelfExamTransation> list) {
		JSONArray json = new JSONArray();
		JSONObject json1 = new JSONObject();
		JSONObject json2 = new JSONObject();
		json1.put(1, "id");
		json1.put(2, "examId");
		json1.put(3, "userId");
		json1.put(4, "startTime");
		json1.put(5, "totalTime");
		json1.put(6, "answers");
		json1.put(7, "score");
		json1.put(8, "comment");
		json1.put(9, "rank");
		json1.put(10, "isValid");

		json.add(json1);
		for (int i = 0; i < list.size(); i++) {
			json2.put("id", list.get(i).getId());
			json2.put("examId", list.get(i).getExamId());
			json2.put("userId", list.get(i).getUserId());
			json2.put("startTime", list.get(i).getStartTime());
			json2.put("totalTime", list.get(i).getTotalTime());
			json2.put("answers", list.get(i).getAnswers());
			json2.put("score", list.get(i).getScore());
			json2.put("comment", list.get(i).getComment());
			json2.put("rank", list.get(i).getRank());
			json2.put("isValid", list.get(i).getIsValid());
			json.add(json2);
		}

		return json;
	}

	public JSONArray listTeamExamToJson(List<TeamExam> list) {
		JSONArray json = new JSONArray();
		JSONObject json1 = new JSONObject();
		JSONObject json2 = new JSONObject();
		json1.put(1, "id");
		json1.put(2, "date");
		json1.put(3, "questions");
		json1.put(4, "clazzId");
		json1.put(5, "winnerId1");
		json1.put(6, "winnerId2");
		json.add(json1);
		for (int i = 0; i < list.size(); i++) {
			json2.put("id", list.get(i).getId());
			json2.put("date", list.get(i).getDate());
			json2.put("questions", list.get(i).getQuestions());
			json2.put("clazzId", list.get(i).getClazzId());
			json2.put("winnerId1", list.get(i).getWinnerId1());
			json2.put("winnerId2", list.get(i).getWinnerId2());
			json.add(json2);
		}

		return json;
	}

	public JSONArray listTeamExamTransationToJson(List<TeamExamTransation> list) {
		JSONArray json = new JSONArray();
		JSONObject json1 = new JSONObject();
		JSONObject json2 = new JSONObject();
		json1.put(1, "id");
		json1.put(2, "examId");
		json1.put(3, "userIds");
		json1.put(4, "startTime");
		json1.put(5, "totalTime");
		json1.put(6, "answers");
		json1.put(7, "score");
		json1.put(8, "comment");
		json1.put(9, "rank");
		json1.put(10, "isValid");
		json1.put(11, "state");
		json.add(json1);
		for (int i = 0; i < list.size(); i++) {
			json2.put("id", list.get(i).getId());
			json2.put("examId", list.get(i).getExamId());
			json2.put("userIds", list.get(i).getUserIds());
			json2.put("startTime", list.get(i).getStartTime());
			json2.put("totalTime", list.get(i).getTotalTime());
			json2.put("answers", list.get(i).getAnswers());
			json2.put("score", list.get(i).getScore());
			json2.put("comment", list.get(i).getComment());
			json2.put("rank", list.get(i).getRank());
			json2.put("isValid", list.get(i).getIsValid());
			json2.put("state", list.get(i).getState());
			json.add(json2);
		}

		return json;
	}

	public JSONArray listUserToJson(List<User> list) {
		JSONArray json = new JSONArray();
		JSONObject json1 = new JSONObject();
		JSONObject json2 = new JSONObject();
		json1.put(1, "id");
		json1.put(2, "name");
		json1.put(3, "password");
		json1.put(4, "email");
		json1.put(5, "phone");
		json1.put(6, "sex");
		json1.put(7, "clazzId");
		json1.put(8, "img");
		json1.put(9, "pwdRepaire");
		json1.put(10, "type");
		json1.put(11, "disname");
		json.add(json1);
		for (int i = 0; i < list.size(); i++) {
			json2.put("id", list.get(i).getId());
			json2.put("name", list.get(i).getName());
			json2.put("password", list.get(i).getPassword());
			json2.put("email", list.get(i).getEmail());
			json2.put("phone", list.get(i).getPhone());
			json2.put("sex", list.get(i).getSex());
			json2.put("clazzId", list.get(i).getClazzId());
			json2.put("img", list.get(i).getImg());
			json2.put("pwdRepaire", list.get(i).getPwdRepaire());
			json2.put("type", list.get(i).getType());
			json2.put("disname", list.get(i).getDisname());
			json.add(json2);
		}

		return json;
	}
}